package com.cmyshare.design.decoratorPattern;

/**
 * @version 1.0
 * @Author cmy
 * @Date 2023/12/26 16:28
 * @desc 测试类
 */
public class Test {
    public static void main(String[] args) {
        //实例化，ConcreteComponent，Person接口的实现类Man 男人
        Man man = new Man();
        //实例化，ConcreteDecorator，装饰器Decorator的子类A
        ManDecoratorA md1 = new ManDecoratorA();
        //set方法加入Component接口Person，因为Man实现Person
        md1.setPerson(man);

        //实例化，ConcreteDecorator，装饰器Decorator的子类B
        ManDecoratorB md2 = new ManDecoratorB();
        //set方法加入装饰器Decorator的子类A，因为ManDecoratorA继承Decorator实现Person，实现给Man添加职责
        //这个的md1向上转型为Decorator,再向上转型为Person
        md2.setPerson(md1);

        //最后输出装饰后的对象eat方法
        md2.eat();
    }
}
